查看原文
其他

快速估计带有高维固定效应的泊松模型, 这计算速度真快, 真实用!

计量经济圈 计量经济圈 2022-05-11

凡是搞计量经济的,都关注这个号了

稿件:econometrics666@126.com

所有计量经济圈方法论丛的code程序, 宏微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问.

关于Stata相关技能,各位学者可以参阅如下文章:1.Stata16新增功能有哪些? 满满干货拿走不谢2.Stata资料全分享,快点收藏学习3.Stata统计功能、数据作图、学习资源等4.Stata学习的书籍和材料大放送, 以火力全开的势头5.史上最全Stata绘图技巧, 女生的最爱6.把Stata结果输出到word, excel的干货方案7.编程语言中的函数什么鬼?Stata所有函数在此集结8.世界范围内使用最多的500个Stata程序9.6张图掌握Stata软件的方方面面, 还有谁, 还有谁?10.LR检验、Wald检验、LM检验什么鬼?怎么在Stata实现11.Stata15版新功能,你竟然没有想到,一睹为快12."高级计量经济学及Stata应用"和"Stata十八讲"配套数据13.数据管理的Stata程序功夫秘籍14.非线性面板模型中内生性解决方案以及Stata命令15.把动态面板命令讲清楚了,对Stata的ado详尽解释16.半参数估计思想和Stata操作示例17.Stata最有用的points都在这里,无可替代的材料18.PSM倾向匹配Stata操作详细步骤和代码,干货十足19.随机前沿分析和包络数据分析 SFA,DEA 及Stata操作20.福利大放送, Stata编程技巧和使用Tips大集成21.使用Stata进行随机前沿分析的经典操作指南,22.Stata, 不可能后悔的10篇文章, 编程code和注解23.用Stata学习Econometrics的小tips, 第二发礼炮24.用Stata学习Econometrics的小tips, 第一发礼炮25.广义合成控制法gsynth, Stata运行程序release26.多重中介效应的估计与检验, Stata MP15可下载27.输出变量的描述性统计的方案28.2SLS第一阶段输出, 截面或面板数据及统计值都行29.盈余管理指标的构建及其Stata实现程序, 对应解读和经典文献30.Python, Stata, R软件史上最全快捷键合辑!31.用Stata做面板数据分析, 操作代码应有尽有32.用Stata做面板数据分析, 操作代码应有尽有33.没有这5个Stata命令, 我真的会活不下去34.第一(二)卷.Stata最新且有趣的程序系列汇编35.第三卷.Stata最新且急需的程序系列汇编36.第四卷.Stata最新且急需的程序系列汇编37.干货: UN和WTO推荐的最全且权威的实证研究方法及在Stata实现!必收藏!

正文

关于下方文字内容,作者:伊凌雪,海南大学&中央财经大学会计(税务)学通信邮箱:yilingxue@hainanu.edu.cn

作者之前的文章:合成控制法创始人如何用SCM做实证呢?这些规定动作一个都不能少!
①面板数据里处理多重高维固定效应的神器, 还可用工具变量处理内生性②高维数据计量经济学是什么? 未来研究大趋势③投影寻踪回归PPR什么鬼? 高维数据回归的神④高维回归方法: Ridge, Lasso, Elastic Net用了吗?⑤计数数据回归模型系统性讲解和操作, 泊松, 负二项等应有尽有,⑥泊松回归与负二元回归什么鬼?

Correia, S., Guimarães, P., & Zylkin, T. (2020). Fast Poisson estimation with high-dimensional fixed effects.


In this article, we present ppmlhdfe, a new command for estimation of (pseudo-)Poisson regression models with multiple high-dimensional fixed effects (HDFE). Estimation is implemented using a modified version of the iteratively reweighted least-squares algorithm that allows for fast estimation in the presence of HDFE. Because the code is built around the reghdfe package (Correia, 2014, Statistical Software Components S457874, Department of Economics, Boston College), it has similar syntax, supports many of the same functionalities, and benefits from reghdfe’s fast convergence properties for computing high-dimensional leastsquares problems. Performance is further enhanced by some new techniques we introduce for accelerating HDFE iteratively reweighted least-squares estimation specifically. ppmlhdfe also implements a novel and more robust approach to check for the existence of (pseudo)maximum likelihood estimates.
1. 概述
本文提出了一种可以估计具有多重高维固定效应(HDFE)的(伪)Poisson回归模型的新方法——ppmlhdfe。通过使用迭代重新加权的最小二乘算法的修改版本来实现估计,该算法允许在存在HDFE的情况下进行快速估计。此外,ppmlhdfe还实现了一种新颖且更强大的方法来检查(伪)极大似然估计的存在。
1.1研究背景
泊松回归是目前公认模型计数的标准方法,在计数变量是非负因变量的乘法模型估计中,它作为一种可行的替代方法也越来越受欢迎。模型通常应用在对数变换因变量的线性拟合中,但是与普通最小二乘法(OLS)一样,泊松回归估计量的一致性所需要的唯一假设是要正确说明因变量条件均值(Gourieroux, Monfort和Trognon 1984)。在这种情况下,泊松回归作为泊松伪极大似然回归(PPML)。
与对数线性模型不同,PPML回归提供了一种自然方法来处理因变量中的零值。PPML回归相较于对数线性回归的另一个优点是,在存在异方差的情况下,OLS拟合的对数线性化模型的参数不一致(Santos Silva and Tenreyro 2006)。在这种情况下,由于OLS估计值一开始就不一致,使用稳健的标准误差来降低异方差的影响会得出错误的推论。
1.2应用领域
当样本中存在许多非负数据或者零值时,如果对数据的分布进行最小假设,PPML回归或许是最稳妥的选择。这种情况出现在许多研究领域,尤其是在处理高度精细的数据时(例如,在对公司的研发支出、专利引用计数、产品日常销量、看医生的频率、公司的信用额、拍卖者竞标量以及各地区的通勤人数进行建模时)。
1.3主要贡献
在本文中,我们展示了使用HDFE的PPML几乎可以与使用HDFE的线性回归一样容易实现。为此,我们提出了一种用HDFE快速估计Poisson回归模型的新命令ppmlhdfe。ppmlhdfe命令用于Poisson回归,即reghdfe代表Stata中的线性回归——这是一个支持多个固定效应的快速可靠的命令。相对于现有用于HDFE非线性估计的算法,它还介绍了一些新颖的加速方法,省去了一些不必要的步骤,提高了对所需要参数的计算速度。
2. 用HDFE估计模型的命令
reghdfe是目前公认最先进的使用HDFE估计线性回归模型的命令,该软件包已经在学术界得到很大的认可。reghdfe提供了一种用HDFE拟合线性回归模型的快速、可靠的方法,为用HDFE估计其他非线性回归模型开辟了一条新的途径。这是因为许多非线性模型可以通过线性回归的递归应用来拟合。一个显然的例子是可以用非线性最小二乘算法拟合的非线性模型。另一个例子是为估计广义线性模型(GLM)而开发的迭代加权最小二乘(IRLS)算法。这是Guimarées在社区贡献的命令poi2hdfe中实施的方法,该方法是为估算具有两个HDFE的PPML回归而开发的。poi2hdfe命令基本上是reghdfe的“包装器”,它使用两个HDFE实现了泊松回归模型的估计。
本文讨论的命令ppmlhdfe通过多个HDFE实现PPML估计,从而提供阶乘变量的全部功能来控制固定效应。因此,它可以适合与poi2hdfe和ppml_panel_sg相同的模型,以及具有多个或交互固定效应更复杂的模型,包括具有不同斜率的模型。
3. 估计方法
3.1 IRLS算法
GLMs是一类基于指数分布族的回归模型,该模型是由Neld和wederburn(1972)提出的。GLM包括流行的非线性回归模型,例如logit,probit,cloglog和Poisson模型。根据Hardin和Hilbe(2018)的第12章,指数族由下式给出

其中a()、b()和c()是特定函数,φ和θ是参数。
β的估计是通过求解(伪)似然最大化的一阶条件得到的。通过带有期望Hessian的高斯—牛顿算法的应用推导出更新方程

r是迭代的指标。公式(1)清楚地表明,β的估计是通过递归应用加权最小二乘得到的,这种方法称为IRLS算法。
3.2泊松回归模型
在泊松回归的情况下,我们有

将回归权重实施IRLS简化为

而中介回归的因变量变为

在(1)中实现IRLS更新回归仅需要计算在先前迭代中获得的拟合值的向量。
4. ppmlhdfe命令
ppmlhdfe需要安装最新版本的ftools和reghdfe。
4.1语法
ppmlhdfe的语法类似于reghdfe:
ppmlhdfe depvar [indepvars] if [weight] , absorb(absvars[,savefe])
exposure(varname) offset(varname) d(newvar) d vce(vcetype) verbose(#)
nolog tolerance(#) guess(string) eform irr separation(string)
maxiteration(#) keepsingletons version display_options]
depvar是因变量。它必须是非负数,但不限于整数值。允许使用时间序列运算符或因子变量(如果它们明确组的一个级别)。
indepvars表示回归中的一组解释变量。允许使用因子运算符和时间序列运算符。
允许使用pweight和fweight。
4.2选项
absorb(absvars[,savefe])包含确定要吸收的固定效应的所有分类变量的列表。每个变量代表一组固定的效果。可以使用因子——变量表示法。如果要保存固定效应的估算值,则可以在指定absvars时为新变量定义名称,如newvar=absvar,或使用选项savefe,在这种情况下,所有固定效应估计都使用_ hdfe# _。
5. 示例
我们从一个简单的示例开始,该示例展示了ppmlhdfe方法在处理不存在最大似然估计时具备的优势。如前所述,ppmlhdfe注意识别分离的观察值,然后以保证最大似然估计存在有意义的方式限制样本。我们的解释数据包括6个观察结果和3个解释变量:

如果我们试图用glm命令来估计泊松回归,Stata则无法收敛。泊松命令产生与相关的所有三个系数的估计值,但是通过快速检验,表明结果是不可靠的:

社区贡献命令ppml(Santos Silva和Tenreyro 2015)可以识别到数据存在的问题并删除变量x3。但是拟合回归仍然显示存在问题:

如果使用strict选项运行,则ppml只会删除所有回归变量。ppmlhdfe的方法完全不同。与其寻找有问题的回归变量,不如寻找有问题的观察结果。在这种情况下,ppmlhdfe删除了第三个观察值。然后剔除x2以避免完美的多重共线性。结果更合理:

接下来,我们使用固定效应选项在命令xtpoisson(请参见[XT] xtpoisson)使用中复制Stata 16手册的示例1。本例使用船舶.dta并在几个回归方程上估计船舶事故次数的泊松回归。把ship变量作为一个固定的效果来控制五种类型的船舶。通过控制exposure(service)估计回归,并将系数报告为发生率。复制示例所需的语法是:
webuse ships, clear
xtpoisson acc op_75_79 co_65_69 co_70_74 co_75_79, exposure(service) irr fe nolog
为了获得与ppmlhdfe等效的结果,我们使用

我们将absorb ship变量作为固定效应。正如预期的那样,变量的估计系数与使用xtPosison命令获得的系数相同。但是,标准误差的估计结果是不同的,因为默认情况下,ppmlhdfe报告稳健标准误差。这两个命令提供的对数似然率的值也不同。命令xtposson报告条件对数似然值,而ppmlhdfe报告实际泊松对数似然值(因此,如果愿意接受泊松分布假设,则可以用针对泊松回归的似然比检验)。鉴于我们使用的是一个小数据集,因此可以使用Poisson(参见[R]posison)命令复制ppmlhdfe获得的结果,如下所示
poisson acc op_75_79 co_65_69 co_70_74 co_75_79 i.ship, exp(service) irr vce(robust)
注意,我们可以吸收任何类别变量作为固定效应。例如,如果我们仅对op 75 79和co 65 69的系数感兴趣,则可以将ship并入co 70 74和co 75 79为

对于模型中明确保留的变量,结果将完全相同。
我们的第三个示例提供了ppmlhdfe的自然应用。在这里,我们使用辅助数据和ppml_panel_sg命令提供的示例拟合引力模型。该数据集包含1986年至2004年期间35个国家的年度双边贸易数据。目标是估计fta(自由贸易协定变量)对贸易的影响。在此示例中,我们要控制国家对应固定效应和国家时间固定效应(对于进口国和出口国)。此外,我们希望我们的标准误差聚集在对应级别的国家/地区。
use http://fmwww.bc.edu/RePEc/bocode/e/EXAMPLE_TRADE_FTA_DATA if category=="TOTAL", clear (Example gravity data for ppml_panel_sg (35 countries, 1988-2004, every 4 yrs))
egen imp=group(isoimp)
egen exp=group(isoexp)

在指定要吸收的三个变量时,我们使用了Stata阶乘表示法,通常比为交互创建分类变量要快。
因为我们的交易示例包括HDFE,所以也让我们有机会从编程的角度解开ppmlhdfe工作原理背后的关键机制。ppmlhdfe本身是一个复杂的命令,它主要用Mata编码,并且还尽可能利用reghdfe现有的内部工作方式。但是,用于实现HDFE–IRLS的基本算法具有很高的可移植性,并且可以使用任何已经为内部转换和标准加权回归提供可靠算法的语言进行编程。以下简单的Stata代码有助于说明。
use http://fmwww.bc.edu/RePEc/bocode/e/EXAMPLE_TRADE_FTA_DATA if ///
category=="TOTAL", clear
egen imp = group(isoimp)
egen exp = group(isoexp)
egen pair = group(isoexp isoimp)
local accelerate = 1
local crit 1
local iter 0
local last .
local inner_tol = 1e-4
while (crit´ > 1e-8 | ìnner_tol´ >crit´) {
loc ++iter
display as text _n "Iteration ìter´ (crit=`crit´) (HDFE tol=ìnner_tol´)"
if (ìter´==1) {
quietly summarize trade, mean
quietly generate double mu = (trade + r(mean)) / 2
quietly generate double eta = log(mu)
quietly generate double z = eta + trade / mu - 1
quietly generate double last_z = z
quietly generate double reg_z = z
}
else if (àccelerate´) {
quietly replace last_z = z
quietly replace z = eta + trade / mu - 1
quietly replace reg_z = z - last_z + z_resid
quietly replace fta = fta_resid
}
else {
quietly replace z = eta + trade / mu - 1
quietly replace reg_z = z
}
Tighten HDFE tolerance
if (`crit´ < 10 * ìnner_tol´) {
local inner_tol = ìnner_tol´ / 10
}
capture drop *resid
Perform HDFE weighted least squares
quietly reghdfe reg_z [aw=mu], absorb(imp#year exp#year imp#exp) ///
residuals(z_resid) keepsing verbose(-1) tolerance(ìnner_tol´)
quietly reghdfe fta [aw=mu], absorb(imp#year exp#year imp#exp) ///
residuals(fta_resid) keepsing verbose(-1) tolerance(ìnner_tol´)
regress z_resid fta_resid [aw=mu], noconstant cluster(pair) noheader
predict double resid, resid
Update eta = Xb; mu = exp(eta)
quietly replace eta = z - resid
quietly replace mu = exp(eta)
local crit = abs(_b[fta_resid] - `last´)
local last = _b[fta_resid]
}
最后一个例子展示了如何将ppmlhdfe与esttab命令(Jann 2007)结合起来构建发布质量回归表。为了构造固定效应的标签,我们使用了reghdfe附带的estfe命令。
该示例包含一个包含1,000,000多个观察值的数据库,其中包含1991年至2009年间收集的所有SSC引用,涉及1991年至2006年间170种经济学期刊上发表的100,404篇文章。该数据库具有期刊ID,文章ID,作者人数,两位JEL主要分类代码(124个代码),出版年份,文章类型(处理,期刊文章,评论或注释)以及每年收集的引文数量。所有观测值中有将近58%为零。我们的因变量是引文数量,我们的主要关注点是一旦当我们控制了各种可以控制的变量,一篇文章中的作者数量是否真的增加了被引用次数。我们运行以下说明:
use citations example, clear
estimates clear
ppmlhdfe cit nbaut, a(issn type jel2 pubyear)
eststo
ppmlhdfe cit nbaut, a(issn#c.year type jel2 pubyear)
eststo
ppmlhdfe cit nbaut, a(issn#year type jel2 pubyear)
eststo
estfe *, labels(type "Article type FE" jel2 "JEL code FE" pubyear "Publication year FE" issn "ISSN FE" issn#c.year "Year trend by ISSN"  issn#year "ISSN-Year FE")
下表总结了esttab命令产生的结果。他们表明作者数量对被引次数有很大的影响。

回归之间的确切区别是什么?在所有三个回归中,我们介绍了文章类型,JEL代码和出版年份的固定效应。但是,在第二个规范中,我们假设每种期刊的引文数量都有趋势。最后一个规范具有更大的灵活性,并允许每个期刊存在特定年份的影响。尽管这只是ppmlhdfe功能的说明性示例,但如果严格分析,对吸收效应的估计分析也可能揭示出有趣的信息。
6. 结论
ppmlhdfe是一个新的由社区贡献的命令,可用于快速估计(伪)泊松回归模型。它具有类似于reghdfe的语法和许多相同的功能。此外,ppmlhdfe注意检查最大似然结果的存在性,并引入一些有希望的新概念来加快具有高维协变量的非线性估计。最后,我们注意到ppmlhdfe的估算方法可以轻松地扩展到GLM系列的任何其他模型。
7. 程序和补充资料
要安装本文列出的相应软件的文件快照,请输入
net sj 20-1
net install st0589 (to install program files, if available)
net get st0589 (to install ancillary files, if available)
有一个专门的GitHub网站(https://github.com/sergiocorreia/ppmlhdfe/),其中包含现在列出的资料以及其他相关资料。
下面这些短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。

2.5年,计量经济圈近1000篇不重类计量文章,

可直接在公众号菜单栏搜索任何计量相关问题,

Econometrics Circle




数据系列空间矩阵 | 工企数据 | PM2.5 | 市场化指数 | CO2数据 |  夜间灯光 | 官员方言  | 微观数据 | 内部数据计量系列匹配方法 | 内生性 | 工具变量 | DID | 面板数据 | 常用TOOL | 中介调节 | 时间序列 | RDD断点 | 合成控制 | 200篇合辑 | 因果识别 | 社会网络 | 空间DID数据处理Stata | R | Python | 缺失值 | CHIP/ CHNS/CHARLS/CFPS/CGSS等 |干货系列能源环境 | 效率研究 | 空间计量 | 国际经贸 | 计量软件 | 商科研究 | 机器学习 | SSCI | CSSCI | SSCI查询 | 名家经验计量经济圈组织了一个计量社群,有如下特征:热情互助最多前沿趋势最多、社科资料最多、社科数据最多、科研牛人最多、海外名校最多。因此,建议积极进取和有强烈研习激情的中青年学者到社群交流探讨,始终坚信优秀是通过感染优秀而互相成就彼此的。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存